Traditionally, this type of language is essentially used in the field of artificial intelligence. In comparison with conventional languages, this type of language fulfills the functional objective of being manipulable without restriction, and of having effective recursive programming as well as automatic management of program-data memory. Moreover, due to the similar representation of the programs and the data, a program can self-modify in order to take new events into account. However, outside its application in the field of artificial intelligence, its use is not highly regarded, and in particular there are many preconceived notions with respect to its use in other fields, especially the new field of distributed data processing.
In this field, in response to this concern, special mechanisms called "RPCs" (Remote Procedure Calls) have been conceived in order to allow locally executed programs to call procedures installed in remote systems. These mechanisms authorize the distribution of access to applications services. This RPC mechanism allows a conventional language like C to call a procedure executed in a remote machine using a different addressable space in the same machine. RPC calls allow the distribution of access to applications services and offer programmers tools for constructing server-client applications in a simplified way.
However, this RPC type of mechanism has its limits and even presents some serious drawbacks. Thus, during an RPC call in a server-client application, the server programs define the functions that can be called with a list or a description of parameters, and these parameters are transmitted remotely from the client to the server, an operation which is extremely static, offers little flexibility and does not permit for example transmission of an executable structure such as a code fragment. Thus, it is not possible to completely send the contents of a transaction to a transactional server and then retrieve the results from it. Moreover, the communication between applications that are running on different machines is synchronous, which poses problems with down time until the responses are returned. In effect, the RPC mechanism, in order to unify local data processing with distributed data processing, proposes generalizing the notion of a function call to the network, which means that the parameters of the called function are transmitted, and since this mechanism functions in a synchronous manner, there is ensuing down time until the function returns a value and only after that does the execution proceed. Moreover, problems of coherence with other protocols are encountered, particularly with X/WINDOWS (trade mark registered by M.I.T.). When, for example, exchanges with the terminals are based on protocols with messages, meaning the asynchronous type, it may be difficult to obtain unification with RPC-type mechanisms executing the function calls which themselves are by definition synchronous. In general, the choice of synchronous-type mechanisms for applications in the telecommunications field is at odds with certain concepts of asynchronism, messages, and types of protocols, and also with notions of acknowledgment and anticipation, all of which are acquired concepts belonging to the culture of this telecommunications field.
The object of the present invention is to remedy these various drawbacks and to propose the use of a language with similar representation for programs and data which is simple and which facilitates the applications to distributed data processing.
For this purpose, the type of language mentioned above is used for the distribution of information and processing in a network management system in accordance with executable messages which convey the code to be executed, meaning simultaneously the functions to be applied and the data to which these functions must be applied, which are asynchronous messages sent through the network in a free format from an interpreter of this language in one machine to another interpreter of this language in another machine, and which moreover authorize a dynamic modification of the code as a function of the data manipulated during the execution and a dynamic migration of different code fragments to the different machines of the management system.